package com.wzq.permission.center.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.wzq.permission.client.model.admin.MenuModel;
import com.wzq.permission.client.model.admin.UserRoleModel;

/**
 * Menu Mapper
 * @author Administrator
 *
 */
public interface MenuMapper extends BaseMapper {
	int logicDelete(@Param("menuIds")Long[] menuIds);
	
	/**
	 * 根据应用ID查询菜单列表
	 * @param applicationId
	 * @return
	 */
	List<MenuModel> queryMenuByApplicationId(@Param("applicationId")Long applicationId,@Param("menuType")String menuType);
	
	/**
	 * 根据menuId查找操作菜单
	 * @param menuId
	 * @return List<MenuModel>
	 */
	List<MenuModel> getOperateMenus(Long menuId);
	
	/**
	 * 批量插入记录
	 * @param list
	 * @return
	 */
	int addBatch(List<MenuModel> list);
	
	/**
	 * 根据父ID删除数据
	 * @param parentId
	 * @return int 
	 */
	int deleteByParentId(Long parentId);
	
	/**
	 * 根据用户ID查询用户权限
	 * @param userId 用户ID
	 * @param applicationId 应用ID
	 * @param menuType 菜单类型，menu or operate
	 * @return
	 */
	List<MenuModel> queryMenusByUserId(@Param("userId")Long userId,@Param("applicationId")Long applicationId,@Param("menuType")String menuType);
	
	/**
     * 根据角色ID集合查询用户菜单
     * @param roleIds 角色ID集合
     * @param menuType 菜单类型，menu or operate
     * @return
     */
    List<MenuModel> queryMenusByRoleIds(@Param("roleIds")List<Long> roleIds,@Param("menuType")String menuType);
	
	/**
	 * 获取最大序号
	 * @param applicationId 应用ID
	 * @param menuType 菜单类型
	 * @param parentId 父ID
	 * @return 最大序号
	 */
	Integer getMaxSerialNumByApplicationId(@Param("applicationId")Long applicationId,@Param("menuType")String menuType,@Param("parentId")Long parentId);
}
